//! mscratch 中保存一个指针，该指针指向 machine-mode hart-local 上下文空间，
//! 以及进入 M-mode trap handler 之后回合用户寄存器进行 swap。

use crate::{csrr, csrrw};

pub fn read() -> usize {
    csrr!(mscratch)
}
/// 写入新值，返回旧值
pub fn swap(new: usize) -> usize {
    let old = csrrw!(mscratch, new);
    old
}
